﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Collections.Generic;

using HHo_Model;
using HHo_Negocio;

public partial class trabajo_wfPrgTrabDet : System.Web.UI.Page
{
    private GestorTblParametros oGesParam;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (hid_Idtrab.Value == "")
            hid_Idtrab.Value = Request.QueryString["wv"];


            ListItem lst = new ListItem();
            lst.Text = "Seleccione";
            lst.Value = "99999";

            HHo_Negocio.GestorTblParametros oGestParam = new GestorTblParametros();

            ListItem lstOrigen = new ListItem();
            lstOrigen.Text = "Seleccione";
            lstOrigen.Value = "99999";

            GestorOrigen oGestOrigen = new GestorOrigen();
            ddl_Origen.DataSource = oGestOrigen.ListarOrigen();
            ddl_Origen.DataTextField = "Codigo";
            ddl_Origen.DataValueField = "Id";
            ddl_Origen.DataBind();
            ddl_Origen.Items.Add(lstOrigen);
            ddl_Origen.SelectedValue = "99999";


            ddl_EstadoTrabProg.DataSource = oGestParam.ListaParametroPorGrupo(2);
            ddl_EstadoTrabProg.DataTextField = "ParametroValor";
            ddl_EstadoTrabProg.DataValueField = "ParametroID";
            ddl_EstadoTrabProg.DataBind();
            ddl_EstadoTrabProg.Items.Add(lst);
            ddl_EstadoTrabProg.SelectedValue = "99999";

            PoblarTipoTrabajo();

            if (hid_Idtrab.Value.Length > 0)
            {
                //TODO -- FALTA PoblarDatos del trabajo
                //PoblarDatosTrabajo(Int32.Parse(hid_Idtrab.Value), Int32.Parse(hid_InfTraSeq.Value));
                //PoblarParticipantes(Int32.Parse(hid_Idtrab.Value), Int32.Parse(hid_InfTraSeq.Value));
                //DeshabilitarControles();
            }
        }
    }
    protected void ddl_Origen_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<E_Origen> lstOrigen;
        E_Origen[] oOrigen;
        GestorOrigen oGestOrigen = new GestorOrigen();
        lstOrigen = oGestOrigen.ListarOrigen(Int32.Parse(ddl_Origen.SelectedValue));
        oOrigen = lstOrigen.ToArray();

        divSubATA.Style.Remove("display");
        divSubATA.Style.Add("display", "none");
        divTipTra.Style.Remove("display");
        divTipTra.Style.Add("display","none");

        LimpiarControles(1);
                
        // Si el Origen contempla poblar Tipo de Trabajo
        if (oOrigen[0].EsObligatorioComponente == "1")
        {
            txtAta.Enabled = true;
            txtSATA.Enabled = true;
            txtComp.Enabled = true;
            txtDesTrab.Enabled = true;
            ddl_TipTrab.SelectedValue = "99999";
            ddl_TipTrab.Enabled = false;
            txtTEstimado.Enabled = true;

            divSubATA.Style.Remove("display");
            divSubATA.Style.Add("display", "block");            
        }
        else
        {
            txtAta.Enabled = false;
            txtSATA.Enabled = false;
            txtComp.Enabled = false;
            txtDesTrab.Enabled = false;
            ddl_TipTrab.Enabled = true;
            txtTEstimado.Text = "";
            txtTEstimado.Enabled = false;
            PoblarTipoTrabajo();

            //TipTra.Style.Add("visibility", "true");
            //Componente.Style.Add("visibility", "hidden");
            //Componente2.Style.Add("visibility", "hidden");
            //Componente3.Style.Add("visibility", "hidden");

            divTipTra.Style.Remove("display");
            divTipTra.Style.Add("display", "block");
        }
    }
    private void PoblarTipoTrabajo()
    {
        ListItem lst = new ListItem();
        lst.Text = "Seleccione";
        lst.Value = "99999";

        GestorTipoTrabajo oGesTipoTrabajo = new GestorTipoTrabajo();
        ddl_TipTrab.DataSource = oGesTipoTrabajo.ConsultarTipoTrabajo(999, '1'); //'1', no considera el primer parametro
        ddl_TipTrab.DataTextField = "Descripcion";
        ddl_TipTrab.DataValueField = "Id";
        ddl_TipTrab.DataBind();

        ddl_TipTrab.Items.Add(lst);
        ddl_TipTrab.SelectedValue = "99999";
    }
    
    protected void ddl_TipTrab_SelectedIndexChanged(object sender, EventArgs e)
    {
        GestorTipoTrabajo oGesTipoTrabajo = new GestorTipoTrabajo();
        E_TipoTrabajo[] oTipTra;
        List<E_TipoTrabajo> lstTipTra;
        lstTipTra = oGesTipoTrabajo.ConsultarTipoTrabajo(Int32.Parse(ddl_TipTrab.SelectedValue), '0');
        oTipTra = lstTipTra.ToArray();
        lblTEstimado.Text = "Tiempo Estimado: " + oTipTra[0].HorasEstimadas.ToString();
        hid_TEstimado.Value = oTipTra[0].HorasEstimadas.ToString();
    }
    
    private void LimpiarControles(int Opcion)
    {
        if (Opcion == 9) //Todos los campos
        {
            ddl_Origen.SelectedValue = "99999";
            txtAta.Text = "";
            txtSATA.Text = "";
            txtComp.Text = "";
            txtDesTrab.Text = "";
            txtTEstimado.Text = "";
            ddl_TipTrab.SelectedValue = "99999";
            ddl_TipTrab.Enabled = false;
            lblTEstimado.Text = "";
            ddl_EstadoTrabProg.SelectedValue = "99999";
            lblDesComp.Text = "";
            hid_CodComponente.Value = "";
        }

        if (Opcion == 1)
        {
            txtAta.Text = "";
            txtSATA.Text = "";
            txtComp.Text = "";
            txtDesTrab.Text = "";
            lblDesComp.Text = "";
            hid_CodComponente.Value = "";
        }
    }
    protected void imgVerificarSubATA_Click(object sender, ImageClickEventArgs e)
    {
        GestorComponente oGestorComponente = new GestorComponente();
        string DatosComponente = oGestorComponente.ConsultarComponente(txtAta.Text, txtSATA.Text, txtComp.Text, "1");
        string[] vDatosComponente;
        if (DatosComponente != null)
        {
            vDatosComponente = DatosComponente.Split('|');
            hid_CodComponente.Value = vDatosComponente[0];
            lblDesComp.Text = vDatosComponente[4];
        }
        else
        {
            lblDesComp.Text = "";
            ClientScriptManager oClient = Page.ClientScript;
            oClient.RegisterStartupScript(this.GetType(), "Aviso", "alert('No existem datos para el componente ingresado, vuelva a ingresar los datos');", true);
        } 
    }
    protected void imgGrabar_Click(object sender, ImageClickEventArgs e)
    {
        GestorTrabajos oGetTrab = new GestorTrabajos();
        E_Usuario eUser = (E_Usuario)Session["UsuarioAuth"];
        Decimal thComponente = 0;
        Decimal thTipTra = 0;
        int CodComponente;
        int TipoTrabajo;
        int IDParamPrgNProg;
        string strMensajePersonalizado = "Grabando";
        ClientScriptManager cs = Page.ClientScript;
        
        
        oGesParam = new GestorTblParametros();
        try
        {
            if (txtTEstimado.Text.Trim().Length > 0)
            {            
            strMensajePersonalizado = "El tiempo estimado no tiene el formato correcto<br>";
            thComponente = Convert.ToDecimal(txtTEstimado.Text);            
            }
            
            strMensajePersonalizado = "Consultando el Parametro del estado programado";
            IDParamPrgNProg = oGesParam.ObtenerParamID(7, StringConstantes.PAR_COD_PRG_PROGRAMADO);
            
            if (hid_CodComponente.Value.Length > 0)
                CodComponente = Int32.Parse(hid_CodComponente.Value);
            else
                CodComponente = 0;

            if (hid_TEstimado.Value.Length > 0)
                thTipTra = Convert.ToDecimal(hid_TEstimado.Value);
            else
                thTipTra = 0;

            if (ddl_TipTrab.SelectedValue == "99999")
                TipoTrabajo = 0;
            else
                TipoTrabajo = Int32.Parse(ddl_TipTrab.SelectedValue);
            
            strMensajePersonalizado = "Grabando el Registro";
            hid_InfTraSeq.Value = oGetTrab.RegistrarDetalleTrabajo(Int32.Parse(hid_Idtrab.Value), IDParamPrgNProg, Int32.Parse(ddl_Origen.SelectedValue),
                -99, "", CodComponente, txtDesTrab.Text, TipoTrabajo, -99, "", "", thComponente, Int32.Parse(ddl_EstadoTrabProg.SelectedValue),
                thTipTra, -99, -99, txtNota.Text, eUser.UsrId).ToString();

            lblMensaje.Text = "Datos Grabados Satisfactoriamente";
            cs.RegisterStartupScript(this.GetType(), "Recargar Parent", "recargarOpener()",true);
            LimpiarControles(9);//limpiar todos    
        }
        catch (Exception ex)
        {
            lblMensaje.Text = "ERROR: " + strMensajePersonalizado + "<strong>Mensaje Tecnico</strong>" + ex.Message;
        }         
    }
}
